/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import modelos.ModeloCategoria;
import modelos.ModeloIngrediente;
import modelos.ModeloProducto;
import vistas.VistaProducto;

/**
 *
 * @author usuario
 */
public class ControladorProducto implements ActionListener{

    private VistaProducto vista;
    private modelos.ModeloProducto modelo;
    private LinkedList<ModeloCategoria> categorias;
    private LinkedList<modelos.ModeloProducto> productos;
    private LinkedList<ModeloIngrediente> ingredientes;

    public ControladorProducto(VistaProducto aThis) {
        vista=aThis;
        modelo= new ModeloProducto();
        categorias= new ModeloCategoria().consultarGeneral();
        productos = new  modelos.ModeloProducto().consultarGeneral();
        ingredientes= new  ModeloIngrediente().consultarGeneral();
        cargarDescripciones();
        vista.addListener(this);
        
    }


    public void cargarDescripciones(){
        LinkedList<String> descripciones = new LinkedList<String>();
        for (int i = 0; i < ingredientes.size(); i++)
            descripciones.add(ingredientes.get(i).getDescripcion());
        vista.cargarComboIngrediente(descripciones);
        descripciones = new LinkedList<String>();
        for (int i = 0; i < categorias.size(); i++)
            descripciones.add(categorias.get(i).getDescripcion());
        vista.cargarComboCategoria(descripciones);
    }

     public int buscarCodigoProducto(String descripicion){
        for (int i = 0; i < productos.size(); i++)
            if(productos.get(i).getDescripcion().equals(descripicion))
                return productos.get(i).getCodigo();
        return -1;
    }

     public int buscarCodigoCategoria(String descripicion){
        for (int i = 0; i < categorias.size(); i++)
            if(categorias.get(i).getDescripcion().equals(descripicion))
                return categorias.get(i).getCodigo();
        return -1;
     }
     
     public int buscarCodigoIngrediente(String descripicion){
        for (int i = 0; i < ingredientes.size(); i++)
            if(ingredientes.get(i).getDescripcion().equals(descripicion))
                return ingredientes.get(i).getCodigo();
        return 0;
     }


     public void actionPerformed(ActionEvent ae) {
         System.out.println(ae.getActionCommand());
        if(ae.getActionCommand().equals("Registrar")){
            System.out.println("aquiiiiiiiii");
                registrar();
        }
        else if(ae.getActionCommand().equals("Salir")){
            vista.setVisible(false);
            vista.limpiar();
        }
        else if(ae.getActionCommand().equals("Mas")){
            if(vista.validarCantidad())
                vista.agregarFila(vista.getRegistro());
        }
        else if(ae.getActionCommand().equals("Menos")){
            vista.menos();
        }
        else{
            vista.limpiar();
        }
    }

   


      private void registrar() {
          System.out.println("sssssssssssss");
          if(vista.hayVacios())
              if(vista.validoNumeros()){
                  System.out.println("ssssssssssss");
            modelo.setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
            modelo.setDescripcion(vista.getTxtDescripcion().getText());
            modelo.setEstatus("A");
            modelo.setPrecio(Float.parseFloat(vista.getTxtPrecio().getText()));
            modelo.setCod_cat(buscarCodigoCategoria(vista.getTextoCmbCategoria()));
            if(modelo.registar()){
                LinkedList<Integer> c = new LinkedList<Integer>();
                LinkedList<Float> p = new LinkedList<Float>();
                LinkedList<String []> f= vista.getInfoTabla();
                for (String[] s : f) {
                    c.add(buscarCodigoIngrediente(s[0]));
                    p.add(Float.parseFloat(s[1]));
                }
                modelo.registarIngredientes(c, p);
                vista.limpiar();
                JOptionPane.showMessageDialog(new JFrame(),"Producto registrado exitosamente","Cari Burguera",JOptionPane.INFORMATION_MESSAGE);
           vista.limpiar();
       }
       else
           JOptionPane.showMessageDialog(new JFrame(),"El codigo ya se encuentra registrada","Cari Burguer",JOptionPane.INFORMATION_MESSAGE);
}

    }
    

}
